# Chapter 10: Simulated Live Broadcasts

The Simulated Live Transfer Agent (SLTA) is a Helix Universal Server utility that allows you to stream a prerecorded clip or a broadcast archive as if it were a live event. Using SLTA, you can deliver encore presentations, or simulate radio or TV programming using any number of clips. This chapter covers the basic and advanced modes of SLTA, explaining how to set up SLTA, create playlists, and run your simulated live broadcast.

# Understanding Simulated Live Broadcasts

SLTA is a command line tool installed with Helix Universal Server. Running on Windows or UNIX, it sends a media stream to Helix Universal Server, which then broadcasts the stream to media players. SLTA supports all broadcasting features:

- multicasting—SLTA can deliver the same stream to multiple Helix Universal Servers on a multicast-enabled network.

- push delivery—SLTA can initiate the broadcast by contacting one or more Helix Universal Servers and delivering the stream. If you are unicasting rather than multicasting to each Helix Universal Server, the number of connections is limited primarily by the outgoing bandwidth on the machine that hosts SLTA.

| For More Information: See "Bandwidth Consumption" for more about bandwidth use in splitting arrangements.

- pull delivery—Helix Universal Server can initiate the broadcast by contacting SLTA and acquiring the stream when the first media player requests the broadcast. SLTA supports connections from multiple pull-enabled receivers. The number of connections is limited primarily by the outgoing bandwidth on the machine that hosts SLTA.

- broadcast redundancy—You can run separate SLTA applications on different machines to create primary and backup streams.

- SureStream-aware splitting—SLTA can conserve bandwidth by delivering each SureStream stream only when it is requested.

| For More Information: For the basics of splitting, see "Understanding Splitting".

## Broadcast Formats

SLTA can simulate an audio or video broadcast in RealMedia, QuickTime, MPEG (including MP3), AU, WAV, or Windows Media format. Other RealNetworks formats, such as RealText and RealPix, can be broadcast through separate applications. Sample RealText and RealPix broadcast applications are included with the Software Development Kit (SDK), available for download at this Web page:

http://proforma.real.com/rnforms/resources/server/realsystemsdk/ind ex.html

| Tip: To simulate a broadcast using QuickTime clips, you can also use Playlist Broadcaster to deliver prerecorded media to Helix Universal Server, which then broadcasts it as described in "Broadcasting QuickTime, MPEG, and RTP-Based Media".

## Basic and Advanced Modes

SLTA has two modes: basic and advanced. Basic mode simulates account- based broadcasting in Helix Producer. It allows you to push the broadcast stream to a single Helix Universal Server. It automatically sets to predefined values certain stream delivery variables that are configurable in advanced mode. For example, basic mode always uses a 10% forward error correction rate and a 30-second data acquisition interval.

In advanced mode, SLTA functions like a transmitter in a splitting setup, sending a stream to one or more Helix Universal Servers configured as receivers, as described in "Setting Up a Receiver". The receivers then broadcast the stream to media players. The following table summarizes the features available in basic and advanced modes.

SLTA Basic and Advanced Mode Features and Requirements
Feature or Requirement | Basic | Advanced | Reference
--- | --- | --- | ---
RealMedia, Windows Media, QuickTime, or MPEG | yes | yes | click here
Helix Universal Server configured as a receiver | no | yes | click here
SLTA configuration file necessary | no | yes | click here
pull delivery | no | yes | click here
push delivery | yes | yes | click here
push delivery to multiple servers | no | yes | click here
multicast delivery to multiple servers | no | yes | click here
SureStream-aware delivery | no | yes | click here
configurable forward error correction | no | yes | click here
ignore server resend requests | no | yes | click here
configurable metadata transmit rate | no | yes | click here
path name preceding stream name | no | yes | click here
SLTA-buffered transport | no | yes | click here
broadcast redundancy | yes | yes | click here
UDP transport | yes | yes | click here
TCP transport | yes | yes | click here
clip playlists | yes | yes | click here
shuffle play | yes | yes | click here
clip title, author, and copyright overrides | yes | yes | click here
wallclock synchronization | yes | yes | click here

## Helix Universal Server Setup

Using SLTA requires a small amount of setup on Helix Universal Server.

### Basic Mode Configuration

SLTA's basic mode is authenticated, so you need to set up a user name and password on Helix Universal Server:

- Although you can use the name and password that logs you into Helix Administrator, RealNetworks recommends that you define a new name and password as described in "Encoder Validation".

- You select the encoder realm that contains the SLTA user name and password under Broadcasting>RealNetworks Encoding, as described in "Setting Up Account-Based Broadcasting".

| Tip: In basic mode, SLTA uses the port range defined on the RealMedia broadcasting page (Broadcasting>RealNetworks Encoding). The default settings are generally sufficient.

### Advanced Mode Configuration

When you run SLTA in advanced mode, you configure Helix Universal Server as a receiver, as described in "Setting Up a Receiver". RealNetworks recommends that you do this before you define your SLTA configuration file.

## Command Line Operation

When you're ready to broadcast, you run SLTA from the command line, specifying the configuration file, the clip or playlist, and any additional options. For each broadcast, you define a single stream name, such as `encore.rm`, which is used in place of the actual clip or playlist name. When viewers click the link to this stream, they join the broadcast in progress.

| Note: To run SLTA, you must be able to open a command prompt on your operating system, and navigate to a specific directory. This chapter does not explain how to perform these functions.

# SLTA Quick Start Tutorials

The following tutorials are optional. They introduce you to the procedures for simulating a broadcast, using the smallest set of variables and commands required to configure and run SLTA. Once you understand the overall operation of SLTA, you'll more easily pick up the many additional configuration features and command line options that you can use.

| Note: In the following tutorials, you run SLTA on your Helix Universal Server machine. In a production environment, however, RealNetworks recommends that you run SLTA and Helix Universal Server on separate machines.

## Quick Start for SLTA Basic Mode

In this tutorial you run SLTA in basic mode.

| To simulate a basic mode broadcast with a prerecorded clip:

1. Anywhere on your Helix Universal Server computer, create a directory named `Simulate`, and copy the following files to it:

1. The `slta.exe` (Windows) or `slta` (UNIX) file from the Helix Universal Server `Bin` directory.

2. The `slta.bat` (Windows) or `slta.sh` (UNIX) file from the Helix Universal Server `Bin` directory.

3. The `real9video.rm` clip from the Helix Universal Server `Content` directory. You can use another RealMedia clip if you wish.

The location of Helix Universal Server in a default installation on Windows is `C:\Program Files\Real\Helix Server`.

2. Open a command prompt and navigate to your `Simulate` directory. Enter one of the following commands to transmit the `real9video.rm` clip (or another clip if you wish) under the stream name `live.rm`. On Windows:

    slta.bat 127.0.0.1 80 name password live.rm real9video.rm

On UNIX:

    slta.sh 127.0.0.1 80 name password live.rm real9video.rm

- You need to substitute the actual Helix Universal Server address for `127.0.0.1` if your files are not on the same machine as Helix Universal Server, or you're not using the local host address.

- The `80` entry refers to the standard HTTP port, which may be different on your Helix Universal Server. See "Defining Communications Ports" for port information.

- For this exercise, use the name and password you use to log into Helix Administrator.

3. Start RealOne Player, give the File>Open command, and enter the following URL:

    rtsp://127.0.0.1/broadcast/live.rm

You need to substitute the actual Helix Universal Server address if your RealOne Player is not on the same machine as Helix Universal Server, or you're not using the local host address. You'll also need to include the RTSP port number if Helix Universal Server does not use port 554.

4. When you finish testing, stop SLTA from the command line by pressing Ctrl+c on Windows, or giving the `kill` command with the process ID on UNIX. After a few seconds, the broadcast stops playing in RealOne Player.

## Quick Start for SLTA Advanced Mode

Follow the steps in this tutorial to run SLTA in advanced mode, creating both a transmitter and a receiver on your Helix Universal Server computer.

| To simulate an advanced mode broadcast with a prerecorded clip:

1. Anywhere on your Helix Universal Server computer, create a directory named `Simulate`, and copy the following files to it:

1. The `slta.exe` (Windows) or `slta` (UNIX) file from the Helix Universal Server `Bin` directory.

2. The `slta.bat` (Windows) or `slta.sh` (UNIX) file from the Helix Universal Server `Bin` directory.

3. The `real9video.rm` clip from the Helix Universal Server `Content` directory. You can use another RealMedia clip if you wish.

The location of Helix Universal Server in a default installation on Windows is `C:\Program Files\Real\Helix Server`.

2. Through Helix Administrator, configure Helix Universal Server as a receiver as described in "Setting Up a Receiver". Enter the following values, accepting the default values for any setting not listed.

   Helix Universal Server Receiver Values for SLTA Quick Start
   Setting | Value | Notes
   --- | --- | ---
   Transmitter Name | `Simulation` | A transmitter can have any name, but the name should not include spaces.
   Transmitter Address | `127.0.0.1` | Using this value requires that your Helix Universal Server binds to the local host address, which it does by default. If you've changed this as described in "Binding to an IP Address", use the actual network address or host name.
   Transmitter Netmask | `32 bits` | This is required when using local host. It's not required if using a full address.
   Security Type | `None` | This option requires no password. In an actual broadcast, RealNetworks recommends that you always use `Basic` security.

3. In a text editor, copy the following XML-based syntax, saving the file as `transmit.cfg` in your `Simulate` directory. You'll need to change the `Address` variable if you're not using the local host address. Also, make sure that the `PortRange` variable matches the setting on the receiver. Values must be quoted, and variable tags must end with a slash (`/`).

    <List Name="BroadcastDistribution">
        <Var SourceName="Simulation"/>
        <List Name="Destinations">
            <List Name="TestReceiver">
                <Var PathPrefix="*"/>
                <Var PortRange="30001-30020"/>
                <Var Address="127.0.0.1"/>
                <Var Protocol="udp/unicast"/>
                <List Name="Security">
                    <Var Type="None"/>
                </List>
            </List>
        </List>
    </List>

| Note: This configuration sets up SLTA as a push transmitter. The variables for pull splitting, which are not shown in the preceding example, are different.

4. Open a command prompt and navigate to your `Simulate` directory. Enter one of the following commands to transmit the `real9video.rm` clip (or another clip if you wish) under the stream name `live.rm`. On Windows:

    slta.bat -c transmit.cfg live.rm real9video.rm

On UNIX:

    slta.sh -c transmit.cfg live.rm real9video.rm

5. Start RealOne Player, give the File>Open command, and enter the following URL:

    rtsp://127.0.0.1/broadcast/Simulation/live.rm

You need to substitute the actual Helix Universal Server address if your RealOne Player is not on the same machine as Helix Universal Server, or you're not using the local host address. You'll also need to include the RTSP port number if Helix Universal Server does not use port 554.

6. When you finish testing, stop SLTA from the command line by pressing Ctrl+c on Windows, or giving the `kill` command with the process ID on UNIX. After a few seconds, the broadcast stops playing in RealOne Player.

# Configuring SLTA for Advanced Mode

You do not need to configure SLTA to run in basic mode. In advanced mode, SLTA relies on an XML-based configuration file for instructions on transmitting to each Helix Universal Server receiver. When you run SLTA, you indicate which configuration file to use. This allows you to define multiple configuration files for different transmission scenarios. The following sections explain how to set up your configuration file for advanced mode broadcasting.

| Tip: It's a good idea to set up Helix Universal Server as a receiver before you write your configuration file. To do this, follow the instructions in "Setting Up a Receiver".

## Using the Configuration Template

The main Helix Universal Server installation directory contains a template for the SLTA configuration file, `slta.cfg`. You can edit this template with any text editor, and save new configuration files as plain text under any name. The `.cfg` extension is recommended, but not necessary. The following example shows the contents of the `slta.cfg` template:

    <List Name="BroadcastDistribution">
        <Var SourceName="ExampleSourceName"/>
        <List Name="Destinations">
            <List Name="ExampleName">
                <Var PathPrefix="*"/>
                <Var PortRange="30001-30020"/>
                <Var AcquisitionDataInterval="30"/>
                <Var FECLevel="0"/>
                <Var SureStreamAware="0"/>
                <Var BufferlessTransport="1"/>
                <Var LocalAddress="0.0.0.0"/>
                <Var Address="127.0.0.1"/>
                <Var TTL="16"/>
                <Var ResendSupported="0"/>
                <Var Protocol="udp/unicast"/>
                <List Name="Security">
                    <Var Type="Basic"/>
                    <Var Password="ExamplePassword"/>
                </List>
            </List>
          </List>
        <List Name="Pull Settings">
            <List Name="PullSource1">
                <List Name="Security">
                    <Var Type="Basic"/>
                    <Var Password="ExamplePassword"/>
                </List>
                <Var SureStreamAware="0"/>
                <Var ListenPort="2030"/>
                <Var PathPrefix="/"/>
                <Var LocalAddress="0.0.0.0"/>
            </List>
        </List>
    </List>

| Tip: If you are not familiar with XML-formatted lists and variables, read "Editing the Configuration File" for an overview.

## Setting Basic Transmitter Properties

The configuration template has an outer list named `BroadcastDistribution`, which you should not change. This main list contains a variable for the transmitter name, and separate sections for push splitting and pull splitting variables. Typically, you need to define only one of these sections depending on the type of splitting you use:

    <List Name="BroadcastDistribution">
        <Var SourceName="ExampleSourceName"/>
        <List Name="Destinations">
            <List Name="ExampleName">
                ...all push splitting variables here...
            </List>
        </List>
        <List Name="Pull Settings">
            ...all pull splitting variables here...
        </List>
    </List>

| Tip: When using push splitting, you can delete the pull splitting variables, and vice versa. This is not necessary, though, and if you do so, be careful not to delete an element you need, such as a closing `</List>` tag. Missing elements will cause an error when you run SLTA.

### Naming the Transmitter

Whether you use push splitting or pull splitting, you define a name for the SLTA transmitter in the `SourceName` variable at the top of the file:

    <Var SourceName="ExampleSourceName"/>

If you plan to run multiple instances of SLTA on the same machine simultaneously, each configuration file should define a different source name. This name appears in Web page links for push transmissions, so it should not include spaces. Here is an example:

    <Var SourceName="BroadcastEncore"/>

| Tip: It helps you to keep track of transmitters and receivers if you use same name you defined for SLTA in the Broadcast Transmitters box on the Helix Universal Server receiver.

## Defining Push Splitting

In push splitting, SLTA initiates the connection, contacting one or more Helix Universal Server receivers, and delivering the simulated live stream. The push splitting section starts with the `Destinations` list, which encompasses a single receiver definition predefined as `ExampleName`. This name is for your convenience, and is not used in the broadcast. Change the name to any value that describes the Helix Universal Server receiver. Here's an example:

    <List Name="Destinations">
        <List Name="Sydney Receiver">
            ...all push splitting variables here...
        </List>
    </List>

### Specifying Multiple Receivers

If you intend to deliver the same simulated live broadcast to more than one Helix Universal Server, duplicate the receiver list within the `Destinations` list, and give the second receiver a new name, as shown in the following example. Each receiver list then defines the same set of variables, but with different values as appropriate for each receiver. You can set up as many receivers as necessary:

    <List Name="Destinations">
        <List Name="Sydney Receiver">
            ...all push splitting variables for the first receiver...
        </List>
        <List Name="Tokyo Receiver">
            ...all push splitting variables for the second receiver...
        </List>
    </List>

SLTA can unicast a separate stream to each receiver, or multicast a single stream on a multicast-enabled network. As explained in Chapter 9, you can also use a Helix Universal Server receiver to transmit (or "split") the SLTA stream to any number of other receivers. This may be a better solution if your SLTA transmitter has limited outgoing bandwidth and you cannot multicast from SLTA to all of the receivers.

| Tip: Using virtual paths, you can define a single configuration file for multiple receivers, but deliver a stream only to certain receivers when you run SLTA. For more information, see "Directing Streams through Paths".

### Setting Push Configuration Values

The following table describes the SLTA push splitting variables you define for each receiver you use. Several transmitter variables correspond to receiver variables that must have a similar value. Minimally, you need to ensure that the `Address`, `PortRange`, `Protocol`, and `Password` variables match the settings on the receiver, as described in "Setting Up a Receiver". The section "Setting Up a Transmitter" describes many of the transmitter features in greater detail.

SLTA Push Splitting Variables
Variable | Value | Function | Reference
--- | --- | --- | ---
`PathPrefix` | `*|``path` | Streams all broadcasts with `"*"`, or specifies a virtual path name. | click here
`PortRange` | `port`-`port` | Indicates the range of ports set up on the receiver for data transmission. | click here
`AcquisitionDataInterval` | `seconds` | Sets the frequency that the transmitter sends metadata information. Valid range is 0 to 60. | click here
`FECLevel` | `integer` | Sets a percentage of corrective packets sent. The valid range is `0` to `100`. | click here
`SureStreamAware` | `0|1` | Indicates whether to use SureStream-aware transmission. The value `0` is "no," `1` is "yes." | click here
`BufferlessTransport` | `0|1` | Uses the clip's timestamp information. The value `0` is "no," `1` is "yes." (Always set this value to 1.) | click here
`LocalAddress` | `address` | Specifies the address or host name of the SLTA transmitter. | click here
`Address` | `address` | Indicates the address or host name of the receiver. | click here
`TTL` | `integer` | Sets the time to live for multicasting. | click here
`ResendSupported` | `0|1` | Ignores (`0`) or honors (`1`) the receiver's resend requests. | click here
`Protocol` | `protocol` | Sets the protocol used in transmitting streams. Choices are `udp/unicast`, `udp/multicast`, and `tcp`. | click here
`Type` | `Basic|None` | Sets the type of security used. | click here
`Password` | `password` | Provides a password for `Basic` security. | click here

| Tip: It's OK to ignore variables for features that you do not use. For example, `TTL` is used only with multicasts, so its setting does not affect unicasts.

#### Directing Streams through Paths

To broadcast all streams to all defined receivers, leave `PathPrefix` set to its default value of `"*"` for each receiver. As described in "Multiple Splitting Definitions", however, you can use virtual path names and stream names to direct different broadcasts to different receivers. Suppose that you define three different receivers, and give each a different `PathPrefix` value as shown in the following example:

    <List Name="Destinations">
        <List Name="Sydney Receiver">
            <Var PathPrefix="*"/>
            ....
        </List>
        <List Name="Tokyo Receiver">
            <Var PathPrefix="news/"/>
            ....
        </List>
        <List Name="Bombay Receiver">
            <Var PathPrefix="news/hourly.rm"/>
            ....
        </List>
    </List>

The Sydney receiver, which uses the default path `"*"`, gets all streams broadcast by SLTA using this configuration file. The Tokyo receiver gets only the streams that specify the `news/` virtual path along with the stream name, which can be anything, when you start the broadcast. The Bombay receiver gets only the broadcast streams named `news/hourly.rm`.

The advantage of using virtual paths is that you can use one configuration file to deliver different streams to different receivers at different times. Instead of creating a separate configuration file for each receiver, you can define all receivers in one configuration file, then use the virtual paths to determine which receivers get which streams when you run SLTA.

Alternatively, you can create multiple configuration files to direct broadcasts to different receivers. Then, instead of specifying a path when starting the broadcast, you select the appropriate configuration file. Either method can create the same results, and you should choose the method that you find more convenient.

| For More Information: The section "Starting SLTA" explains how to indicate the path when you start the broadcast.

| Note: As noted in the table "SLTA Pull Splitting Variables", pull splitting definitions can include a virtual path prefix, too. There is generally no need to set this path, however. In pull splitting, SLTA responds to requests. It does not actively direct streams as it does in push splitting. You can therefore leave the default path prefix of `"/"` set for pull splitting.

#### Using Bufferless Transport

For most clip types, you should leave `BufferlessTransport` set to its default value of `"1"`. In this mode, SLTA transmits the clip according to the clip's internal timestamp information, which is appropriate for most streaming audio and video formats. If you set this variable to `"0"`, SLTA buffers clip data itself and builds its own broadcast scheduler, which increases broadcast latency and processor overhead. You can enable bufferless transport only for clips that stream at a constant bit rate.

## Defining Pull Splitting

In pull splitting, Helix Universal Server initiates the connection, contacting SLTA to acquire the stream when the first media player requests the simulated live broadcast. The pull splitting section starts with the `Pull Settings` list, which encompasses a single definition predefined as `PullSource1`. Change this definition name, which is not used in broadcasts, to anything that describes your SLTA transmitter:

    <List Name="Pull Settings">
        <List Name="NewsEncoreTransmitter">
            <List Name="Security">
                <Var Type="Basic"/>
                <Var Password="ExamplePassword"/>
            </List>
            <Var SureStreamAware="0"/>
            <Var ListenPort="2030"/>
            <Var PathPrefix="/"/>
            <Var LocalAddress="0.0.0.0"/>
        </List>
    </List>

Any number of receivers can pull the same stream from a single SLTA transmitter. You therefore do not need to replicate the pull splitting variables for each receiver in use, as you do with push splitting. You need to define multiple configuration files only if you intend to deliver different streams to one or more receivers at the same time. You then run multiple instances of SLTA, using a different configuration file, stream name, and playlist for each instance.

### Setting Pull Configuration Values

The following table describes the SLTA pull splitting configuration variables you define. Most configuration is done on the receiver, which must be enabled for pull splitting, as described in "Enabling Pull Splitting Requests". The section "Setting Up a Transmitter" describes transmitter features in greater detail.

SLTA Pull Splitting Variables
Variable | Value | Function | Reference
--- | --- | --- | ---
`PathPrefix` | `/|``path` | Streams all broadcasts with `"/"`, or specifies a virtual path name. | click here
`ListenPort` | `port` | Set the port where SLTA listens for stream requests. | click here
`SureStreamAware` | `0|1` | Indicates whether to use SureStream-aware transmission. The value `0` is "no," `1` is "yes." | click here
`LocalAddress` | `address` | Specifies the address or host name of the SLTA transmitter. | click here
`Type` | `Basic|None` | Sets the type of security used. | click here
`Password` | `password` | Provides a password for `Basic` security. | click here

# Creating a Playlist

You do not need to write a playlist to broadcast a single clip. If you have a series of clips to broadcast, though, you list them in sequence in the playlist. A playlist can contain any number of clips. When you run SLTA, you can play the clips in the order they're listed, or in random order (shuffle play). Refer to "Using SLTA Options" for information about command line options that affect playlists.

## Writing a Basic Playlist

In a text file (file extension `.txt`), list on a separate line each file that you want SLTA to stream. If the files do not reside in the same directory as the playlist, include either their full paths, or paths relative to the location of the playlist. In the following example, clips reside in the same directory as the playlist:

    CompanyLogo.rm
    Welcome.rm
    President.rm
    Treasurer.rm
    Conclusions.rm

| Warning! All files in the playlist must be in the same media format, and must be encoded at the same bit rate. If you use SureStream, all clips in the playlist must be SureStream clips encoded for the same set of rates. You cannot mix SureStream clips with single-rate RealAudio or RealVideo clips.

| Tip: You can determine a clip's encoded bit rate or rates by opening it in RealOne Player, and giving the View>Clip>Clip Source command.

## Adding Title, Author, and Copyright Information

Prerecorded clips often have title, author, and copyright information encoded into them. Through the playlist, you can override this information on a clip- by-clip basis. Or, you can set the same title, author, and copyright values for all clips. RealOne Player users display this information through the clip info command (Ctrl+i). Information about a certain clip displays only as that clip is broadcast.

| Tip: Although a playlist isn't required to broadcast a single clip, you can write a playlist containing a single clip just to use the title, author, and copyright overrides.

### Setting Information for All Clips

To include the same title, author, and copyright information for every clip, add `title`, `author`, and `copyright` tags to the beginning of the playlist. This information overrides any encoded information in the clip. End each tag with a colon, as shown in the following example:

    title: Annual Report
    author: Chris Lee, Executive Assistant
    copyright: Copyright 2002
    ...clip1...
    ...clip2...

| Tip: Presentation information, which you can specify in addition to clip information, is not supported directly through SLTA. You can add overall presentation information by delivering the simulated live broadcast through SMIL, however. For more information, see Introduction to Streaming Media.

### Using Individual Clip Parameters

If you append individual `title`, `author`, and `copyright` parameters to a clip in the playlist, the specified information overrides the playlist values described above, as well as values encoded in the clip. You can use any combination of `title`, `author`, and `copyright` parameters for each clip. Use double quotation marks around values. Separate the first parameter from the clip file name with a question mark (`?`). Precede all subsequent parameters with an ampersand (`&`), as shown in this example:

    Welcome.rm?title="Annual Report"&author="Chris Lee"&copyright="(c) 2002"

### Mixing Information Styles

You can mix the different ways of delivering clip information. When you do this, keep in mind that clip information is used in the following order:

1. Information specified for each clip in the playlist.

2. Information specified for all clips at the start of the playlist.

3. Information encoded in each clip.

In the following playlist example, suppose that each clip has a title, author, and copyright value encoded directly in the clip:

    copyright: (c) 2001-2002
    CompanyLogo.rm?title="Welcoming Remarks"
    Welcome.rm?title="Welcoming Remarks"
    President.rm?title="President's Address"
    Treasurer.rm?title="Treasurer's Summary"
    Conclusions.rm?title="The Future is Bright"

Within this playlist, the `title` parameter for each clip overrides the titles encoded in the clips. The playlist's `copyright` parameter sets the same copyright value for all clips in the list, also overriding the clips' encoded values. No `author` values are specified, though, so each clip uses its encoded author text.

# Running SLTA

This section describes the SLTA command line syntax, environment variables, and options. To run SLTA in advanced mode, you must first configure your Helix Universal Server receiver, set up your SLTA configuration file, and, optionally, write your playlist.

## Moving SLTA to a Different Machine

RealNetworks recommends that you do not run SLTA from your Helix Universal Server machine. This reserves the Helix Universal Server's processor power for stream delivery alone. To install SLTA on another machine on your network, copy the `slta.exe` (`slta` on UNIX) executable file from the `Bin` subdirectory of the main Helix Universal Server directory. Then, copy to the same directory the following libraries, which reside in Helix Universal Server's `Plugins` and `Lib` directories.

SLTA Libraries
Library | Windows File Name | UNIX File Name
--- | --- | ---
Windows Media ASF file format plug-in | `asfw3260.dll` | `asfwmpln.so.6.0`
SLTA main plug-in | `iqsl3260.dll` | `iqsltalib.so.6.0`
MP3 file format plug-in | `mp3f3260.dll` | `mp3f.so.6.0`
MPEG file format plug-in | `mpgf3260.dll` | `mpgf.so.6.0`
QuickTime file format plug-in | `qtff3260.dll` | `qtffplin.so.6.0`
remote broadcast plug-in | `remb3260.dll` | `rembrdcst.so.6.0`
RealMedia file format plug-in | `rmff3260.dll` | `rmffplin.so.6.0`
SDP stream description plug-in | `sdpp3260.dll` | `sdpplin.so.6.0`
local file system | `smpl3260.dll` | `smplfsys.so.6.0`
XML configuration plug-in | `xmlc3260.dll` | `xmlcfg.so.6.0`

| Tip: You can run SLTA on an operating system different from the one that hosts your Helix Universal Server. To get the appropriate libraries, you can download the free version of Helix Universal Server for the operating system on which SLTA runs.

## Setting Environment Variables

Running SLTA on your Helix Universal Server machine (but not on a different machine) requires that you set two environment variables. If you plan to use SLTA on your Helix Universal Server machine frequently, set the following environment variables permanently. This lets you run the SLTA executable file directly:

`SLTA_PLUGIN_PATH` | Full path to the directory that holds Helix Universal Server plug-ins
`SLTA_SUPPORT_PATH` | Full path to the directory that holds Helix Universal Server libraries (DLLs).

| Tip: If you plan to use SLTA only occasionally, you can run the provided batch (Windows) or shell (UNIX) file described in "Starting SLTA" to set the variables for your current session.

### Setting Variables on Windows

To set SLTA environment variables permanently on a default installation of Helix Universal Server on Windows, add the following two lines to your environment:

    set SLTA_PLUGIN_PATH=C:\Program Files\Real\Helix Server\Plugins
    set SLTA_SUPPORT_PATH=C:\Program Files\Real\Helix Server\Lib

If you installed Helix Universal Server in a location other than the default, modify the C:\Program Files\Real\Helix Server portion of the paths above to the actual base path where Helix Universal Server resides.

How you add variables to your environment depends on the operating system you're using. On Windows 2000, for example, you add environment variables with the Start>Settings>Control Panel>System>Advanced>Enviornment Variables command.

## Starting SLTA

On Helix Universal Server, SLTA files are located in the `Bin` subdirectory of the main Helix Universal Server directory. Although you can run SLTA from this location, RealNetworks recommends that you move the necessary files to a different directory, preferably on a different machine. The file you run depends on your machine, operating system, and whether you've set environment variables permanently.

SLTA Executable to Use
SLTA Location | Windows | UNIX
--- | --- | ---
On a machine other than Helix Universal Server, as described in "Moving SLTA to a Different Machine". | `slta.exe` | `slta`
On your Helix Universal Server machine with variables set permanently. | `slta.exe` | `slta`
On your Helix Universal Server machine without having set variables permanently. | `slta.bat` | `slta.sh`

### Starting SLTA in Basic Mode

From a command prompt, use the following syntax to run SLTA in basic mode.

    slta[.ext] server_address HTTP_port name password stream_name.ext clip.ext|playlist.txt [-options]

- Use the appropriate SLTA executable file as described in the preceding table.

- Next, specify the network address (IP address or DNS name) and HTTP port of your Helix Universal Server. See "Defining Communications Ports" for port information.

- The name and password entries give the encoder access to Helix Universal Server. For more information, see "Helix Universal Server Setup".

- For `stream_name``.``ext`, specify the name of the simulated live stream. This name appears in links to the broadcast, and uses the appropriate media extension, such as `.rm` for a RealMedia broadcast. When broadcasting QuickTime or MPEG, use `.mov` or an appropriate MPEG extension (such as `.mpeg` or `.mp4`) for the stream name. You do not need to use an SDP file.

- Next, you specify either the single clip you want to broadcast, or the playlist you wrote according to the instructions in "Creating a Playlist". If the clip or playlist is not in the SLTA directory, specify the full path, or a path relative to the location of the SLTA executable file.

- Optionally, you can use command line options as described in "Using SLTA Options". For example, SLTA loops a clip or playlist by default. With command line options, you can specify how many repetitions to play.

#### Basic Mode Example

Running from a machine other than the Helix Universal Server computer, or with the environment variables set permanently on Helix Universal Server, you would use a command such as the following to broadcast a single RealMedia archive (`awards.rm`) as a simulated live event (`encore.rm`), using no additional SLTA options:

    slta.exe helixserver.example.com 80 simulator k56weiq9 encore.rm awards.rm

#### Notes on Running SLTA in Basic Mode

- As SLTA begins the broadcast, it displays the progress indicator described in "Monitoring and Stopping SLTA".

- SLTA contacts the receiver immediately to deliver the stream.

- You can verify connections on Helix Universal Server using the Server Monitor described in Chapter 18.

### Starting SLTA in Advanced Mode

From a command prompt, use the following syntax to run SLTA in advanced mode.

    slta[.ext] -c config_file.cfg stream_name.ext clip.ext|playlist.txt [-options]

- Use the appropriate SLTA executable file as described in "Starting SLTA".

- For `config_file`.`cfg`, give the full or relative path to a configuration file you created according to instructions in "Configuring SLTA for Advanced Mode".

- For `stream_name``.``ext`, specify the name of the simulated live stream. This name appears in links to the broadcast, and uses the appropriate media extension, such as `.rm` for a RealMedia broadcast. When broadcasting QuickTime or MPEG, use `.mov` or an appropriate MPEG extension (such as `.mpeg` or `.mp4`) for the stream name. You do not need to use an SDP file.

If you defined virtual paths for receivers, as described in "Directing Streams through Paths", you can include a virtual path in front of the stream name, as in `news/live.rm`. This path, which does not correspond to any directory on the machine, uses a Web-style forward slash even on Windows.

- Next, you specify either the single clip you want to broadcast, or the playlist you wrote according to the instructions in "Creating a Playlist". If the clip or playlist is not in the SLTA directory, specify the full path, or a path relative to the location of the SLTA executable file.

- Optionally, you can use command line options as described in "Using SLTA Options". For example, SLTA loops a clip or playlist by default. With command line options, you can specify how many repetitions to play.

#### Advanced Mode Example

Running from a machine other than the Helix Universal Server computer, or with the environment variables set permanently on Helix Universal Server, you would use a command such as the following to broadcast a single RealMedia archive (`awards.rm`) as a simulated live event (`encore.rm`), using no additional SLTA options:

    slta.exe -c transmit.cfg encore.rm awards.rm

#### Notes on Running SLTA in Advanced Mode

- As SLTA begins the broadcast, it displays the progress indicator described in "Monitoring and Stopping SLTA".

- If you set up push splitting, SLTA contacts the receiver immediately to deliver the stream.

- If you're using pull splitting, SLTA does not deliver the stream until the receiver requests it.

- You can verify connections on the Helix Universal Server receiver using the Server Monitor described in Chapter 18.

### Running Redundant SLTA Encoders

In both basic and advanced modes, SLTA supports redundant encoders as described in "Using Broadcast Redundancy". This allows the Helix Universal Server receiver to switch to a backup stream if the primary encoder stream fails. Although you can run two instances of SLTA on the same machine, this provides process redundancy only. For true redundancy, run an instance of SLTA on two separate machines that use different power supplies and network connections.

To set up SLTA redundancy, install SLTA on your backup machine as described in "Moving SLTA to a Different Machine". Copy over the configuration file, the playlist (if used), and the broadcasted clip or clips. Because the content is prerecorded, you want to start SLTA on both machines at the same time, or as close as possible. You may want to set up a script appropriate for your operating system that launches both SLTA processes on the two machines simultaneously.

The only difference between the two SLTA instances is the stream name used in the command that starts SLTA. Each stream name needs a delimiter that identifies it as the primary or the backup. The following example builds on an example in a preceding section by appending `.1` to the stream name to identify it as the primary stream:

    slta.exe -c transmit.cfg encore.rm.1 awards.rm

With SLTA on your backup machine, you add `.2` to the stream name:

    slta.exe -c transmit.cfg encore.rm.2 awards.rm

## Using SLTA Options

SLTA provides optional command line arguments that affect the simulated live broadcast. The options appear last on the command line in any order, each option preceded by a hyphen. Here is an example:

    slta.exe -c transmit.cfg encore.rm playlist.txt -e -n10 -r

The following table summarizes the options. Some options are useful only with playlists. Unless noted otherwise, all options are available in basic or advanced mode.

SLTA Command Line Options
Option | Function | Reference
--- | --- | ---
`c` | Use the specified configuration file (advanced mode only) | click here
`e` | Disable playlist title, author, and copyright information. | click here
`f` | Force playlist title, author and copyright updates. This is the default. | click here
`n` `N` | Play `N` files, then stop, where `N` is an integer that specifies the number of files to play. Using just `-n` sets up a continuous loop, which is the default behavior. | click here
`r` | Transmit playlist files in a random order (shuffle play). | click here
`t` | Force TCP transport instead of UDP (basic mode only). | click here
`w` | Enable wallclock synchronization with other streams. | click here

### Modifying the Playback Order

By default, SLTA transmits a clip or playlist in a continuous loop. If you specify just one file, for example, SLTA continuously transmits that file until you stop the broadcast. You can use command line `-n` `N` and `-r` options to modify the default playback.

#### Specifying the Number of Clips to Play

The `-n` `N` switch specifies the total number of files to play. To play a clip just once, for instance, you specify `-n1`. To play it twice, use `-n2`. For a single playback of a playlist that contains 3 clips, for example, you specify `-n3`. A value such as `-n5` means to play the single clip five times, or to play the first five clips on the playlist (not to play each clip in the playlist five times). If you use `-n5` for a playlist that has just three clips, SLTA plays the three clips in order, then returns to the start of the list to play the first two clips again, for a total of five clips played.

#### Changing a Playlist During a Broadcast

When SLTA loops a playlist, either continuously (the default behavior) or a predetermined number of times because of the `-n` `N` option, it reads the playlist each time it starts a loop. This allows you to change the playlist during the broadcast. Simply edit the existing playlist, or replace the playlist with another of the same name. SLTA uses the modified playlist after it has played all of the clips in the current playlist.

| Tip: This feature lets you stream long broadcasts without writing a single, long playlist. Your first playlist might last an hour. During that hour of the broadcast, you can change the playlist to specify the clips that play during the second hour, and so on.

#### Using Shuffle Play

When you use a playlist, you can create shuffle play by including the `-r` option. If you use just this option without `-n` `N`, the playlist cycles continuously, playing clips in a random order during each cycle. You can use both the `-r` and `-n` `N` switches to cycle randomly through the playlist a certain number of times. For example, `-r` and `-n10` cause SLTA to transmit a playlist of five clips twice, with clips playing in a random order each time.

### Disabling Title, Author, and Copyright Overrides

If you use the `-e` option, title, author, and copyright information included in the playlist is not used. RealOne Player still displays any title, author, and copyright information encoded in the clips, however. The `-f` option, which is the default, preserves all playlist overrides, which are described in "Adding Title, Author, and Copyright Information".

### Using TCP Transport

In basic mode, SLTA opens a UDP connection to Helix Universal Server unless you use the `-t` option to force a TCP connection. Although TCP provides a more reliable connection in a lossy environment, it increases the network overhead. In advanced mode, the `-t` option is not available because you specify TCP or UDP transport in the SLTA configuration file.

### Synchronizing to a Wallclock

When you include the `-w` option, SLTA sets the first timestamp of the packet stream to the time defined by the clock on the SLTA computer. You can then use the SMIL wallclock timing feature to synchronize events in a SMIL presentation to specific times in the broadcast stream. For example, you might pop up an advertisement at 2:35 P.M. as recorded by the SLTA computer clock.

| For More Information: For information about the SMIL wallclock feature, see the advanced timing chapter of RealNetworks Production Guide.

## Monitoring and Stopping SLTA

As SLTA runs, it displays the name of the file it is currently transmitting. A line of asterisks indicates the percentage of the file that has been sent. For example, a row of asterisks that lines up below the number `5` indicates that the file is approximately 50 percent complete. Here is an example:

`Transmitting Welcome.rm...
0----1----2----3----4----5----6----7----8----9----10
***********************`

SLTA stops automatically and displays the text `Done` when it has finished transmitting all of the files according to the playlist (if used) and the specified options. If it cannot transmit a file in a playlist because it cannot find the file, or the file is encoded in a format different from the preceding files, it skips that file, prints an error message, and transmits the next file.

Ordinarily, you will not need to stop SLTA manually except to halt the broadcast before it completes, or to terminate a continuously looping broadcast. To stop SLTA, press Ctrl+c at the command line from which you started SLTA on Windows. On UNIX, use the `kill` command with the process ID of the SLTA process.

# Linking to the Simulated Live Broadcast

The following sections explain simulated live broadcast link formats in general, and provide example links for RealMedia broadcasts. For broadcasts in other formats, you need to use transmitter mount points and stream names as appropriate for that format.

## Writing Basic Mode Links

Links to SLTA broadcasts in basic mode use the unicast URL formats described in "Linking to Unicasts".

### Linking from a Web Page

A Web page link to a RealMedia broadcast in which Helix Universal Server uses the default port 80 for HTTP might look like this:

    http://helixserver.example.com/ramgen/broadcast/archive.rm

- The `/ramgen/` mount point launches RealOne Player, as explained in "Using a Client Launch Utility". For a Windows Media broadcast, you use `/asxgen/`.

- The default broadcast mount point is `/broadcast/`, which you use for all media formats delivered by SLTA. If you are using redundant SLTA transmitters, use the `/redundant/` mount point instead. This default mount point can be changed as described in "Modifying Encoder Redundancy Settings".

- The requested file, shown above as `archive.rm`, is the stream name you specify when starting SLTA. You do not use the actual name of the broadcasted clip or playlist.

### Linking from a Ram or SMIL File

You can also launch a simulated, live RealMedia broadcast through a Ram file or SMIL file, as described in "Using Metafiles". The URL format is similar to the preceding example, but it specifies RTSP or MMS, and omits the `/ramgen/` or `/asxgen/` parameter. In the following example, the port number is omitted, which means that port 554 is used for RTSP:

    rtsp://helixserver.example.com/broadcast/archive.rm

## Creating Push Splitting Links

Links for advanced mode broadcasts use the same format as split broadcasts, which are described in "Linking to Split Content". Push splitting links point to the Helix Universal Server receiver, but include the name of the SLTA transmitter to identify the broadcast.

### Linking from a Web Page

A Web page link to a RealMedia broadcast in which Helix Universal Server uses the default port 80 for HTTP might look like this:

    http://helixserver.example.com/ramgen/broadcast/Simulated/news/archive.rm

- The `/ramgen/` mount point launches RealOne Player, as explained in "Using a Client Launch Utility". For a Windows Media broadcast, you use `/asxgen/`.

- The default broadcast mount point is `/broadcast/`, but the Helix Universal Server receiver may define a different mount point. If you are using redundant SLTA transmitters, use the `/redundant/` mount point instead. This default mount point can also be changed, as described in "Modifying Encoder Redundancy Settings".

- Following the broadcast mount point, you specify the transmitter name, such as `/Simulated/`. The name is set in the `SourceName` variable of the configuration file, as explained in "Setting Basic Transmitter Properties".

- A path name such as `news/` is optional. You include it only if you've specified a value other than `"*"` for the `PathPrefix` variable in the configuration file. For more information, see "Directing Streams through Paths".

- The requested file, shown above as `archive.rm`, is the stream name you specify when starting SLTA. You do not use the actual name of the broadcasted clip or playlist.

### Linking from a Ram or SMIL File

You can also launch a simulated, live RealMedia broadcast through a Ram file or SMIL file, as described in "Using Metafiles". The URL format is similar to the preceding example, but it specifies RTSP or MMS, and omits the `/ramgen/` or `/asxgen/` parameter. In the following example, the port number is omitted, which means that port 554 is used for RTSP:

    rtsp://helixserver.example.com/broadcast/Simulated/news/archive.rm

## Writing Pull Splitting Links

As with push splitting, a pull splitting link requests the stream from the receiver, and indicates the transmitter where the broadcast originates. The link does not use the transmitter name given in the SLTA configuration file, however. Instead, it provides the address and listen port of the transmitter so that the receiver can locate the transmitter and pull the broadcast stream.

### Linking from a Web Page

A Web page link to a RealMedia broadcast in which the Helix Universal Server receiver uses the default port 80 for HTTP might look like this:

    http://helixserver.example.com/ramgen/broadcast/pull/simulator.example.com:2030/news/archive.rm

- The `/ramgen/` mount point launches RealOne Player, as explained in "Using a Client Launch Utility". For a Windows Media broadcast, you use `/asxgen/`.

- The default broadcast mount point is `/broadcast/`, but the Helix Universal Server receiver may define a different mount point. If you are using redundant SLTA transmitters, use the `/redundant/` mount point instead. This default mount point can also be changed, as described in "Modifying Encoder Redundancy Settings".

- Following the broadcast mount point, you specify the pull splitting mount point defined on the Helix Universal Server receiver, such as `/pull/`. The name is set in the receiver definition, as explained in "Enabling Pull Splitting Requests".

- After the pull splitting mount point, you give the transmitter's address and listen port. The example above is `/simulator.example.com:2030/`. The SLTA configuration file defines the listen port, as described in "Setting Pull Configuration Values".

| Note: When broadcasting Windows Media, you need to mask the address and port through an alias, as described in "Using URL Aliases".

- A path name such as `news/` is optional. You include it only if you've specified a value other than `"/"` for the `PathPrefix` variable in the configuration file. For more information, see "Setting Pull Configuration Values".

- The requested file, shown above as `archive.rm`, is the stream name you specify when starting SLTA. You do not use the actual name of the broadcasted clip or playlist.

### Linking from a Ram or SMIL File

You can also pull a RealMedia broadcast through a Ram file or SMIL file, as described in "Using Metafiles". The URL format is similar to the preceding example, but it specifies RTSP or MMS, and omits the `/ramgen/` or `/asxgen/` parameter. In the following example, the receiver's RTSP port number is omitted, which means that port 554 is used for RTSP:

    rtsp://helixserver.example.com/broadcast/pull/simulator.example.com:2030/news/archive.rm

| Note: When broadcasting Windows Media, you need to mask the address and port through an alias, as described in "Using URL Aliases".

| © 2002 RealNetworks, Inc. All rights reserved. For more information, visit RealNetworks Click here if the Table of Contents frame is not visible at the left side of your screen.